package com.example.mybatisplus.controller;


import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.example.mybatisplus.entity.User;
import com.example.mybatisplus.service.IUserService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

import java.util.*;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author tzs
 * @since 2021-03-13
 */
@RestController
@RequestMapping("/user")
public class UserController {
    @Autowired
    private IUserService userService;

    /**
     * 根据ID获取用户信息
     * @Param  userId  用户ID
     * @Return User 用户实体
     */
    @RequestMapping("/getInfo")
    public User getInfo(String userId){
        User user =  userService.getById(userId);
        return user;
    }
    /**
      * 查询全部信息
      * @Return List 用户实体集合
      */
    @RequestMapping("/getList")
    public List getList(){
        List userList =  userService.list();
        return userList;
    }
    /**
     * 分页查询全部数据
     * @Return IPage 分页数据
     */
    @RequestMapping("/getInfoListPage")public IPage getInfoListPage(){//需要在Config配置类中配置分页插件
        IPage page = new Page<>();
        page.setCurrent(5); //当前页
        page.setSize(1);    //每页条数
        page = userService.page(page);
        return page;
    }
    /**
     * 根据指定字段查询用户信息集合
     * @Return Collection 用户实体集合
     */
    @RequestMapping("/getListMap")
    public Collection getListMap(){
        Map map = new HashMap<>();//kay是字段名 value是字段值
        map.put("name","tzs");
        Collection userList =  userService.listByMap(map);
        return userList;
    }
    /**
     * 新增用户信息
     * @Author Sans
     * @CreateTime 2019/6/8 16:40
     */
    @RequestMapping("/saveInfo")
    public void saveInfo(){
        User user = new User();
        user.setName("小龙");
        user.setId(2);
        userService.save(user);
    }
    /**
     * 批量新增用户信息
     */
    @RequestMapping("/saveInfoList")
    public void saveInfoList(){//创建对象
        User sans = new User();
        sans.setName("Sans");
        User papyrus = new User();
        papyrus.setName("papyrus");
        List list =new ArrayList<>();
        list.add(sans);
        list.add(papyrus);
        userService.saveBatch(list);
    }
    /**
     * 更新用户信息
     */
    @RequestMapping("/updateInfo")
    public void updateInfo(){//根据实体中的ID去更新,其他字段如果值为null则不会更新该字段,参考yml配置文件
        User user = new User();
        user.setId(1);
        userService.updateById(user);
    }
    /**
     * 新增或者更新用户信息
     */
    @RequestMapping("/saveOrUpdateInfo")
    public void saveOrUpdate(){//传入的实体类user中ID为null就会新增(ID自增)//实体类ID值存在,如果数据库存在ID就会更新,如果不存在就会新增
        User user = new User();
        user.setId(1);
        userService.saveOrUpdate(user);
    }
    /**
     * 根据ID删除用户信息
     */
    @RequestMapping("/deleteInfo")
    public void deleteInfo(String userId){
         userService.removeById(userId);
    }
    /**
     * 根据ID批量删除用户信息
     */
    @RequestMapping("/deleteInfoList")
    public void deleteInfoList(){
        List userIdlist = new ArrayList<>();
        userIdlist.add("12");
        userIdlist.add("13");
        userService.removeByIds(userIdlist);
    }
    /**
     * 根据指定字段删除用户信息
     */
    @RequestMapping("/deleteInfoMap")
    public void deleteInfoMap(){//kay是字段名 value是字段值
        Map map = new HashMap<>();
        map.put("id",1);
        userService.removeByMap(map);
    }
}
